えらく変な部分で引っかかったのでメモ。
Windows 7で開発中、Visual Studio 2010で作成したWebサービス(.asmx)に、タグっぽい文字列を送り込むと、以下の例外が起きました。
System.Web.HttpRequestValidationException: 危険な可能性のある Request.Form 値がクライアント (……) から検出されました。
しかし、全く無害で正当な入力であっても起きます。別に有害だから例外が起きるわけではありません。いきなり例外が起きては、ユーザーもびっくりします。
これを抑止する方法を探索していてやっと分かりました。
抑止方法 §
Web.configに以下のような内容を追加します。(既に中身があると思うので、それに矛盾しない形で同じ中身を割り込ませます)
<configuration>
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
</configuration>
罠はどこにあるのか §
ネットを検索した結果として、pages要素だけ説明しているサイトが多いのが罠です。実際は、"<httpRuntime requestValidationMode="2.0" />"も必要でした。おそらく、旧世代のソフトでは無くても通るのでしょう。